<?php
namespace app\facade;

use think\Facade;

class Str extends Facade {
    //加密

    public static function code($string,$operation,$key='')
    {
        $key= md5($key);
        $iv = substr($key,0,16);

        // if ($operation == 'D') {
        //     return (openssl_decrypt(base64_decode($string), 'aes-256-cbc', $key,OPENSSL_RAW_DATA,$iv));
        // } else {
        //     return (openssl_encrypt($string, 'aes-256-cbc', $key,OPENSSL_RAW_DATA,$iv));
        // }

        $key_length=strlen($key);
        $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;
        $string_length=strlen($string);
        $rndkey=$box=array();
        $result='';
        for($i=0;$i<=255;$i++)
        {
            $rndkey[$i]=ord($key[$i%$key_length]);
            $box[$i]=$i;
        }
        for($j=$i=0;$i<256;$i++)
        {
            $j=($j+$box[$i]+$rndkey[$i])%256;
            $tmp=$box[$i];
            $box[$i]=$box[$j];
            $box[$j]=$tmp;
        }
        for($a=$j=$i=0;$i<$string_length;$i++)
        {
            $a=($a+1)%256;
            $j=($j+$box[$a])%256;
            $tmp=$box[$a];
            $box[$a]=$box[$j];
            $box[$j]=$tmp;
            $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
        }
        if($operation=='D')
        {
            if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8))
            {
            return substr($result,8);
            }
            else
            {
            return'';
            }
        }
        else
        {
            return str_replace('=','',base64_encode($result));
        }
    }
    
    //随机字符串

    public function randomkeys($length) { 
        $pattern = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ";
        $output = "";
        for($i=0;$i<$length;$i++) 
        { 
            $output .= $pattern[mt_rand(0,35)]; //生成php随机数 

        } 
        return $output; 
    }

    public function cheakSQL($str) {
        if(strpos($str,"*")!==false) return true;
        if(strpos($str,"?")!==false) return true;
        if(strpos($str,"'")!==false) return true;
        if(strpos($str,"and")!==false) return true;
        if(strpos($str,"or")!==false) return true;
        if(strpos($str,"not")!==false) return true;
        if(strpos($str,"=")!==false) return true;
        return false;
    }

    function getSubstr($str, $leftStr, $rightStr) {
        $left = strpos($str, $leftStr);
        $right = strpos($str, $rightStr,$left);
        if(!$left or $right < $left) return '';
        return substr($str, $left + strlen($leftStr), $right-$left-strlen($leftStr));
    }
}